import requests
from tqdm import tqdm

# ohsome API endpoint for geometry data
url = "https://api.ohsome.org/v1/elements/geometry"

# Define the bounding polygon for the Black Sea region.
# Format: <customID>:<lon1>,<lat1>,<lon2>,<lat2>,...,<lonN>,<latN>
# This rectangle uses the coordinates (27,39), (27,47), (45,47), (45,39)
bpolys_coords = "BlackSea:27,39,27,47,45,47,45,39,27,39"

# Set up the parameters:
# - time: snapshot date (November 2020)
# - filter: use the "in" operator to select highways that are motorway, trunk, or primary
params = {
    "time": "2024-11-01",
    "filter": "highway in (motorway,trunk,primary)",
    "bpolys": bpolys_coords
}

# Make a streaming request to monitor download progress.
with requests.get(url, params=params, stream=True) as r:
    r.raise_for_status()  # Raise an error if the request failed.
    
    # Retrieve total file size from headers if provided.
    total_size = int(r.headers.get('content-length', 0))
    
    # Open the output file in binary mode.
    with open("highways_blacksea_2020-11.json", "wb") as f, tqdm(
            total=total_size, unit='B', unit_scale=True, desc="Downloading"
    ) as progress_bar:
        # Download the data in chunks.
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:  # Filter out keep-alive chunks.
                f.write(chunk)
                progress_bar.update(len(chunk))

print("Download complete! The highways data has been saved to 'highways_blacksea_2020-11.json'.")
